using System;
using System.Collections.Generic;
using System.ComponentModel;
using Microsoft.Ccr.Core;
using Microsoft.Dss.Core.Attributes;
using Microsoft.Dss.ServiceModel.Dssp;
using Microsoft.Dss.ServiceModel.DsspServiceBase;
using W3C.Soap;

using dssp = Microsoft.Dss.ServiceModel.Dssp;
using submgr = Microsoft.Dss.Services.SubscriptionManager;
using diffdrive = Microsoft.Robotics.Services.Drive.Proxy;

namespace UrbanDrive
{

    public sealed class Contract
    {
        [DataMember]
        public const string Identifier = "http://schemas.tempuri.org/2008/09/urbandrive.html";
    }

    [DataContract]
    public class UrbanDriveState
    {
    }


    [ServicePort]
    public class UrbanDriveOperations : PortSet<DsspDefaultLookup, DsspDefaultDrop, Connect, AllStop, SetDrivePower>
    {
    }

    public class Connect : Update<UrbanDriveState, PortSet<DefaultUpdateResponseType, Fault>>
    {
        public Connect()
        {
        }

        public Connect(UrbanDriveState body)
            : base(body)
        {
        }
    }

    public class AllStop : Update<diffdrive.AllStopRequest, PortSet<DefaultUpdateResponseType, Fault>>
    {
        public AllStop()
        {
        }

        public AllStop(diffdrive.AllStopRequest body)
            : base(body)
        {
        }
    }

    public class SetDrivePower : Update<diffdrive.SetDrivePowerRequest, PortSet<DefaultUpdateResponseType, Fault>>
    {
        public SetDrivePower()
        {
        }

        public SetDrivePower(diffdrive.SetDrivePowerRequest body)
            : base(body)
        {
        }
    }

}
